package com.szosen.measurement;


import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;

public class MyEcgQueue<T> {
    private Queue<T> storage = new ConcurrentLinkedQueue<T>();

    /**
     * 将指定的元素插入队尾
     */
    public void offer(T v) {
        storage.offer(v);
    }

    /**
     * 检索，但是不移除队列的头，如果此队列为空，则返回 null
     */
    public T peek() {
        return storage.peek();
    }

    /** 检索，但是不移除此队列的头 */
    /**
     * 此方法与 peek 方法的惟一不同是，如果此队列为空，它会抛出一个异常
     */
    public T element() {
        return storage.element();
    }

    public int size() {
        return storage.size();
    }

    /**
     * 检索并移除此队列的头，如果队列为空，则返回 null
     */
    public synchronized T poll() {
        return storage.poll();
    }

    /**
     * 将队列所有数据清空
     */
    public void removeAll() {
        storage.clear();
    }
    /** 检索并移除此队列的头 */
    /**
     * 此方法与 poll 方法的不同在于，如果此队列为空，它会抛出一个异常
     */
    public T remove() {
        return storage.remove();
    }

    /**
     * 队列是否为空
     */
    public boolean isEmpty() {
        return storage.isEmpty() && storage.size() > 0;
    }

    /**
     * 打印队列元素
     */
    public String toString() {
        return storage.toString();
    }
}
